In a distributed database environment, business applications are sometimes configured to switch to a backup database server to avoid data loss, in the event that a primary database server becomes unavailable. Further, some business applications also require near zero downtime while fail over system and software are upgraded. Some conventional fail over systems implement a rolling upgrade scheme. However, such systems typically impose a geographic requirement that the primary database server and the backup database server must be physically close to each other for the failover to occur. Further, the number of backup database servers is generally also limited in such systems. As a result, conventional systems fail to provide a high availability and disaster recovery system with flexibility and transparency.